
// 参考项目，广丰移动端
// dd.env.platform != "notInDingTalk"   
// "undefined" !== typeof dd

// 钉钉认证获取token
dd.ready(function() {
    dd.runtime.permission.requestAuthCode({
      corpId : "这里是你的corpID",
      onSuccess : function(result) {
        var code = result.code;
        alert(code);
      },
      onFail : function(err) {
          alert('出错了, ' + err);
      }
    });
});
// 项目里获取dd的code后调获取token接口
dd.ready(() => {
  dd.runtime.permission.requestAuthCode({
    corpId: process.env.corpId
  })
  .then(res => {
    const params = {
      systemCode: process.env.systemCode,
      systemPassword: process.env.systemPassword
    };
    const loginXhr = new XMLHttpRequest();
    loginXhr.open("POST", process.env.dingtalkLoginUrl);
    loginXhr.setRequestHeader("Content-type", "application/json");
    loginXhr.send(JSON.stringify(params));
    loginXhr.onreadystatechange = () => {
      if (loginXhr.readyState === 4) {
        if (loginXhr.status >= 200 && loginXhr.status < 300) {
          const data = JSON.parse(loginXhr.response).data;
          const { token, type, header } = data;
          const noLoginXhr = new XMLHttpRequest();
          noLoginXhr.open("POST", process.env.dingtalkNologinUrl);
          noLoginXhr.setRequestHeader(
            "Content-type",
            "application/json"
          );
          noLoginXhr.setRequestHeader(header, type + " " + token);
          const params = {
            agentId: process.env.agentId,
            authCode: res.result ? res.result.code : res.code,
            corpId: process.env.corpId
          };
          noLoginXhr.send(JSON.stringify(params));
          noLoginXhr.onreadystatechange = () => {
            if (noLoginXhr.readyState === 4) {
              if (
                noLoginXhr.status >= 200 &&
                noLoginXhr.status < 300
              ) {
                const res = JSON.parse(noLoginXhr.response);
                const { jobNumber } = res.data.dingResult;
                window.sessionStorage.setItem("employeeCode",jobNumber);
                resolve();
              } else {
                Toast.fail("获取钉钉用户信息失败");
                reject();
              }
            }
          };
        } else {
          Toast.fail("获取钉钉Token失败");
          reject();
        }
      }
    };
  });
});

// 钉钉内部跳转链接：支持返回上一页、浏览器打开方式、分享...等功能
dd.ready(() => {
  dd.biz.util.openLink({
    url: `${window.location.origin}${
      process.env.NODE_ENV === "production" ? "/dist" : ""
    }/#/download?download_url=${url}`, //要打开链接的地址
    onSuccess: () => {
      console.log("打开成功");
    }
  });
});

/*
导航栏
（1）dd.navigateTo 保留当前页面，跳转到应用内的某个指定页面，可以使用dd.navigateBack返回到原来页面。注意：页面最大深度为5

（2）dd.navigateBack 关闭当前页面，返回上一级或多级页面。可通过getCurrentPages获取当前的页面栈信息，决定需要返回几层。

（3）dd.redirectTo 关闭当前页面，跳转到应用内的某个指定页面。

（4）dd.reLaunch 关闭当前所有页面，跳转到应用内的某个指定页面。

（5）dd.setNavigationBar 设置导航栏文字及样式。仅支持背景色（backgroundColor）

（6）dd.switchTab 跳转到指定 tabBar 页面，并关闭其他所有非 tabBar 页面。
* */

if ("undefined" !== typeof dd) {
  dd.navigateBack();
}